package practice;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Day14 {
    //重排字符串
    //链接：https://ac.nowcoder.com/acm/problem/222104
    //题目：
    //小红拿到了一个只由小写字母组成的字符串。她准备把这个字符串重排（只改变字母的顺序，不改变数量）
    //重排后小红想让新字符串不包含任意两个相同的相邻字母。
    //你能帮帮她吗？
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String s = in.next();
        Map<Character,Integer> map = new HashMap<>();
        int max = 0;
        char ch = '0';
        for(int i = 0; i < n; i++) {
            map.put(s.charAt(i),map.getOrDefault(s.charAt(i),0) + 1);
            if(max < map.getOrDefault(s.charAt(i),0)) {
                max = map.getOrDefault(s.charAt(i),0);
                ch = s.charAt(i);
            }
        }
        char[] ret = new char[n];
        int k = 0;

        while(k < n && max != 0) {
            ret[k] = ch;
            k += 2;
            max--;
            map.put(ch,map.get(ch)-1);
        }
        if(k >= n && max != 0) {
            System.out.println("no");
            return;
        }
        for(int i = 0; i < n; i++) {
            if(map.getOrDefault(s.charAt(i),0) != 0) {
                while(map.getOrDefault(s.charAt(i),0) != 0) {
                    if(k >= n) {
                        k = 1;
                    }
                    ret[k] = s.charAt(i);
                    k += 2;
                    map.put(s.charAt(i),map.getOrDefault(s.charAt(i),0)-1);
                }
            }
        }
        System.out.println("yes");
        System.out.println(String.valueOf(ret));
    }
    //最长无重复子串
    //链接：https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4?tpId=196&tqId=37149&ru=/exam/oj
    // 给定一个长度为n的数组arr，返回arr的最长无重复元素子数组的长度，无重复指的是所有数字都不相同。
    //子数组是连续的，比如[1,3,5,7,9]的子数组有[1,3]，[3,5,7]等等，但是[1,3,7]不是子数组
    public int maxLength (int[] arr) {
        int left = 0;
        int right = 0;
        int len = arr.length;
        int max = 0;
        Map<Integer,Integer> map = new HashMap<>();
        while(right < len) {
            map.put(arr[right],map.getOrDefault(arr[right],0)+1);
            while(map.getOrDefault(arr[right],0) > 1) {
                map.put(arr[left],map.getOrDefault(arr[left],0)-1);
                left++;
            }
            max = Math.max(max,right-left+1);
            right++;
        }
        return max;
    }
}
